# -*- coding: utf-8 -*-
import datetime
import time


# 1.把datetime转成字符串
def datetime_toString(dt):
    strftime = dt.strftime("%Y-%m-%d-%H-%M-%S")
    print("1.把datetime转成字符串: ", strftime)
    return strftime


# 2.把字符串转成datetime
def string_toDatetime(st):
    print("2.把字符串转成datetime: ", datetime.datetime.strptime(st, "%Y-%m-%d %H:%M:%S"))


# 3.把字符串转成时间戳形式
def string_toTimestamp(st):
    print("3.把字符串转成时间戳形式:", time.mktime(time.strptime(st, "%Y-%m-%d %H:%M:%S")))


# 4.把时间戳转成字符串形式
def timestamp_toString(sp):
    print("4.把时间戳转成字符串形式: ", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(sp)))


# 5.把datetime类型转外时间戳形式
def datetime_toTimestamp(dt):
    print("5.把datetime类型转外时间戳形式:", time.mktime(dt.timetuple()))


# 把datetime转换成字符串
def datetime_to_str(dt: datetime):
    return dt.strftime("%Y-%m-%d %H:%M")


# 把字符串转换成datetime
def str_to_datetime(st: str):  # 字符串时间格式为：2018-10-31 08:45:02
    return datetime.datetime.strptime(st, "%Y-%m-%d %H:%M:%S")


# 把时间戳转换成常规时间
def time_to_normal(ti):
    ti = time.localtime(ti)  # ti时间为时间戳的整数位为：10位
    return time.strftime("%Y-%m-%d %H:%M:%S", ti)


# 把常规时间转换成时间戳
def normal_to_time(st: str):  # 字符串时间格式为：2018-10-31 08:45:21
    return time.mktime(time.strptime(st, "%Y-%m-%d %H:%M:%S"))


class AddSqlalchemyDatetime:
    def __init__(self):
        self.dt = datetime.datetime.now()

    def get_current_date(self):
        return self.dt.strftime("%Y%m%d")

    def get_current_time(self):
        return self.dt.strftime("%H%M%S")

    def get_current_datetime(self):
        return self.dt.strftime("%Y%m%d%H%M%S")


if __name__ == '__main__':
    # 日期时间字符串
    st = "2017-11-23 16:10:10"
    # 当前日期时间
    dt = datetime.datetime.now()
    # 当前时间戳
    sp = time.time()

    # 1.把datetime转成字符串
    datetime_toString(dt)
    # 2.把字符串转成datetime
    string_toDatetime(st)
    # 3.把字符串转成时间戳形式
    string_toTimestamp(st)
    # 4.把时间戳转成字符串形式
    timestamp_toString(sp)
    # 5.把datetime类型转外时间戳形式
    datetime_toTimestamp(dt)

    # datetime的加减
    import datetime

    # 减一天
    print(datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
    # 2018-05-07 16:56:59
    # 可以把days改为hours minutes，seconds就可以提前XX小时/分钟了。
    pass
